/*
    可选连?.的三种形式：
    1. obj?.prop    如果obj存在则返回obj.prop，否则返回undefined
    2. obj?.[prop]  如果obj存在则返回obj[prop]，否则返回undefined
    3. obj.method?.()  如果obj.method存在则调用obj.method()，否则返回undefined

    ?.检查左边部分是否为null/undefined，如果不是继续运算
 */ 

let user = {};


alert(user?.address?.street);

let user1 = {
    admin() {
        alert("I am admin");
    }
}


let user2 = {};

//将?.()用于调用一个可能不存在的函数
user1.admin?.();
user2.admin?.();